package cn.com.cfae.iras.doc.analyze.parse.model;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 发行条款-模型
 */
public class FXTKModel extends BizBaseModel {

    /**
     * @auth 佟媛媛
     * @date 18/11/1 上午11:33
     * @desc 发行人（企业名称、企业全称）
     */
    public static final String FXR = "FXR";

    /**
     * @auth 佟媛媛
     * @date 18/11/1 上午11:34
     * @desc 注册通知书文号
     */
    public static final String ZCTZSWH = "ZCTZSWH";

    /**
     * @auth 佟媛媛
     * @date 18/11/1 上午11:35
     * @desc 发行范围
     */
    public static final String FXFW = "FXFW";

    /**
     * @auth 佟媛媛
     * @date 18/11/1 上午11:35
     * @desc 信用评级机构
     */
    public static final String XYPJJG = "XYPJJG";

    /**
     * @auth 佟媛媛
     * @date 18/11/1 上午11:35
     * @desc 评级结果
     */
    public static final String PJJG = "PJJG";

    /**
     * @auth 佟媛媛
     * @date 18/11/1 上午11:35
     * @desc 增进
     */
    public static final String ZJ = "ZJ";

    /**
     * 发行条款
     */
    public static final String MODEL_NAME = "FXTK";


    /**
     * 债务融资工具名称
     */
    private final static String ZWRZGJMC = "ZWRZGJMC";

    /**
     * 票据面值
     */
    private final static String PJMZ = "PJMZ";

    /**
     * 注册总金额
     */
    private final static String ZCZJE = "ZCZJE";

    /**
     * 本期发行金额
     */
    private final static String BQFXJE = "BQFXJE";

    /**
     * 发行期限
     */
    private final static String FXQX = "FXQX";
    /**
     * 担保
     */
    private final static String DB = "DB";
    /**
     * 发行价格
     */
    private final static String FXJG = "FXJG";
    /**
     * 发行利率
     */
    private final static String FXLL = "FXLL";
    /**
     * 发行对象
     */
    private final static String FXDX = "FXDX";
    /**
     * 承销方式
     */
    private final static String CXFS = "CXFS";
    /**
     * 发行方式
     */
    private final static String FXFS = "FXFS";
    /**
     * 主承销商
     */
    private final static String ZCXS = "ZCXS";
    /**
     * 簿记管理人
     */
    private final static String BJGLR = "BJGLR";
    /**
     * 登记托管机构
     */
    private final static String DJTGJG = "DJTGJG";
    /**
     * 集中簿记建档技术支持机构
     */
    private final static String JZBJJD = "JZBJJD";
    /**
     * 发行日期
     */
    private final static String FXRQ = "FXRQ";
    /**
     * 登记日
     */
    private final static String DJR = "DJR";
    /**
     * 起息日
     */
    private final static String QXR = "QXR";
    /**
     * 缴款日
     */
    private final static String JKR = "JKR";

    /**
     * 兑付日
     */
    private final static String DFR = "DFR";
    /**
     * 上市流通日
     */
    private final static String SSLTR = "SSLTR";
    /**
     * 兑付方式
     */
    private final static String DFFS = "DFFS";
    /**
     * 兑付价格
     */
    private final static String DFJG = "DFJG";

    /**
     * 票据利率
     */
    private final static String PJLL = "PJLL";
    /**
     * 债务融资工具余额
     */
    private final static String ZWRZGJYE = "ZWRZGJYE";

    /**
     * 付息日
     */
    private final static String FXTKFXR = "FXTKFXR";

    /**
     * 票据期限
     */
    private final static String PJQX = "PJQX";

    /**
     * 债权债务登记日
     */
    private final static String ZQZWDJR = "ZQZWDJR";

    /**
     * 北金所
     * 集中簿记建档系统技术支持机构
     */
    private final static String JZBJJDJSZCJG = "JZBJJDJSZCJG";
    /**
     * 税务提示
     */
    private final static String SWTS = "SWTS";


    /**
     * 适用法律
     */
    private final static String SYFL = "SYFL";

    /**
     * 分销期限
     */
    private final static String FenXQX = "FenXQX";


    private static Map<String, String> items = new HashMap<>();

    private static List<String> needValueList = new ArrayList<>();

    static {
        items.put(ZWRZGJMC, "债务融资工具|债务融资工具名称|票据名称|融资券名称|本期中期票据");//名称应该没必要添加
        items.put(FXQX, "发行期限|票据期限|本期中期票据期限|本期发行期限|期限|债券期限|本期短期融资券期限|融资券期限|中期票据期限");
        items.put(DB, "担保|担保情况|担保方式|债务融资工具担保情况|本期担保情况|信用担保|本期短期融资券担保情况|融资券担保");
        items.put(BQFXJE, "本期发行基础金额|本期发行金额|发行金额|本期发行额度|本期基础发行规模|本期中期票据发行金额|首期发行金额|本次发行金额|本期发行额度|基础发行规模|本期发行总额|本期发行额|本期发行规模|本期发行总额");
        items.put(ZCZJE, "注册总金额|注册金额|注册额度|注册总额度|注册发行总额|本次中期票据注册金额|注册发行金额|注册总额|注册规模|本期发行金额上限");
        items.put(ZWRZGJYE, "待偿还存续期债务融资|待偿还债务融资|待偿还债务融资工具余额|债务融资工具余额|债务融资余额|待偿还余额|融资余额|待偿还短期融资券余额|债券余额|待偿还各类债券余额|债务融资工具余额|待偿还的人民币债券余额|待偿还各项人民币债券余额|待偿还各类公司债券|债务融资工具余额|待偿还中期票据余额|待偿还余额|待偿还的人民币中期票据余额|待偿还债务融资余额|待偿还短期融资券余额|待偿还债务融资工具|待偿还的债务融资工具|待偿还公司债券|债务融资工具合计|待偿还债券余额|待偿直接债务融资余额|待偿还余额|待偿还非金融企业债融资工具|待偿还余额合计|合计待偿还余额");
        items.put(DFJG, "兑付价格");
        items.put(DFFS, "兑付方式|兑付办法");
        items.put(SSLTR, "上市流通日");
        items.put(DFR, "兑付日|兑付日期");
        items.put(JKR, "缴款日|缴款日期|缴款(起息)日");
        items.put(QXR, "起息日|起息日期|缴款(起息)日");
        items.put(DJR, "登记日|登记日期");
        items.put(FXRQ, "发行日期|发行日|发行首日");
        items.put(JZBJJD, "集中簿记建档");
        items.put(DJTGJG, "登记托管机构|托管人|登记和托管|托管方式|托管");
        items.put(ZQZWDJR, "债权债务登记日|债权登记日|登记日");
        items.put(BJGLR, "簿记管理人|主承销商");
        items.put(ZCXS, "主承销商|簿记管理人");
        items.put(FXFS, "发行方式");
        items.put(CXFS, "承销方式|销售方式");
        items.put(FXLL, "发行利率");
        items.put(FXJG, "发行价格");
        items.put(PJMZ, "票据面值|面值|票据面额|票据金额|票面金额|中期票据面值|融资券面值");
        items.put(PJLL, "票据利率|票面利率|发行利率|本期中期票据利率|融资券利率");
        items.put(FXDX, "发行对象|发行对象及范围|发行范围及对象|发行范围和对象|发行对象和范围");
        items.put(ZJ, "增进|短期融资券担保|担保");
        items.put(PJJG, "评级结果|信用级别|信用等级|信用评级");
        items.put(XYPJJG, "信用评级机构|评级机构");
        items.put(FXFW, "发行范围|发行对象及范围|发行范围及对象|发行范围和对象|发行对象和范围");
        items.put(ZCTZSWH, "注册通知书文号|注册通知书|接受注册文件号|接受注册文号");
        items.put(FXR, "发行人|发行人全称");
        items.put(FXTKFXR, "付息日|利息兑付");
        items.put(JZBJJDJSZCJG, "集中簿记建档系统技术支持机构|集中簿记建档|集中薄记建档系统技术支持机构|集中簿记建档系统|技术支持机构|北金所|北京金融资产交易所");
        items.put(PJQX, "票据期限|本期中期票据期限|发行期限|本期发行期限|期限|融资券期限");
        items.put(SWTS, "税务提示");
        items.put(SYFL, "适用法律");
        items.put(FenXQX, "分销期限|分销期");
    }

    public static List<ExtractItem> createExtractItemList() {
        List<ExtractItem> extractItemList = new ArrayList<>();
        items.forEach((key, value) -> {
            ExtractItem extractItem = new ExtractItem();
            extractItem.setItemName(key);
            extractItem.setSynonyms(value.split(SYNONYM_SPLIT_CHAR));
            extractItemList.add(extractItem);
        });
        return extractItemList;
    }


}
